home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / parallel / maplist < prev    next >
Text File  |  1992-04-11  |  1KB  |  49 lines

  1. map_list(Input_list,Machines):-
  2.     start_evaluators(Machines),
  3.     map_each_element(Input_list,Output_list),
  4.     send_request(writeln(Output_list)),
  5.     stop_evaluators(Machines).
  6.  
  7. map_each_element([],[]).
  8.  
  9. map_each_element([H|T],[HR|TR]):-
  10.     start_evaluation(H),
  11.     map_each_element(T,TR),
  12.     rd(evaluated(H,HR)).
  13.  
  14. start_evaluation(Value):-
  15.     rdp(evaluated(Value,_)),
  16.     send_request(write(evaluated_)),
  17.     send_request(writeln(Value)),
  18.     !.
  19.  
  20. start_evaluation(Value):-
  21.     rdp(evaluate(Value)),
  22.     send_request(write(waiting_for_evaluation_)),
  23.     send_request(writeln(Value)),
  24.     !.
  25.  
  26. start_evaluation(Value):-
  27.     rdp(being_evaluated(Value)),
  28.     send_request(write(being_evaluated_)),
  29.     send_request(writeln(Value)),
  30.     !.
  31.  
  32. start_evaluation(Value):-
  33.     send_request(write(to_evaluate_)),
  34.     send_request(writeln(Value)),
  35.     out(evaluate(Value)).
  36.  
  37. start_evaluators([]).
  38.  
  39. start_evaluators([F|R]):-
  40.     eval(F,fibonacci,poll_requests(fibonacci)),
  41.     start_evaluators(R).
  42.  
  43. stop_evaluators([]).
  44.  
  45. stop_evaluators([_|R]):-
  46.     out(evaluate(halt)),
  47.     stop_evaluators(R).
  48.  
  49.